package xyz.syyrjx.blog.util;

import xyz.syyrjx.blog.exception.PageException;

import java.util.ArrayList;
import java.util.List;

public class PageUtil {
    /**
     * 获取本次访问的页
     * @param count 总记录条数
     * @param page 当前页
     * @param next 当前操作（0为上一页,1为下一页）
     * @param num 一页包含的条数
     * @return 本次需要访问的页
     */
    public static int pageGet(Integer count,Integer page,Integer next,Integer num){
        double temp = count *1.0/num;
        int countPage = (int)temp;
        if(temp >(int)temp){
            countPage += 1;
        }
        if(next == null || next == 0){
            page = 1;
        }else{
            if(next == 1){
                page -= 1;
                if(page <= 1){
                    page = 1;
                }
            }else if (next == 2) {
                page += 1;
                if(page >= countPage){
                    page = countPage;
                }
            }else if (next == 3) {
                page = countPage;
            }else {
                throw new PageException("对页数进行了未知的操作");
            }
        }
        return page;
    }

    /**
     * 获取当前访问页和总页数
     * @param count 总记录条数
     * @param page 当前页
     * @param next 当前操作（0为首页,1为上一页，2为下一页，3为尾页）
     * @param num 一页包含的记录条数
     * @return 本次访问的页和总页数的List
     */
    public static List<Integer> pageListGet(Integer count,Integer page,Integer next,Integer num){
        double temp = count * 1.0 / num;
        int countPage = (int)temp;
        if(temp >(int)temp){
            countPage += 1;
        }
        if(next == null || next == 0){
            page = 1;
        }else if(next == 1){
            //上一页
            page -= 1;
            if(page < 1){
                page = 1;
            }
        }else if(next == 2){
            //下一页
            page += 1;
            //如果当前是最后一页
            if(page > countPage){
                page = countPage;
            }
        }else {
            //尾页
            page = countPage;
        }
        List<Integer> pageList = new ArrayList<>();
        pageList.add(page);
        pageList.add(countPage);
        return pageList;
    }
}
